package com.webserver.http;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.XMLReader;

import java.io.File;
import java.sql.SQLOutput;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * HttpContext 封装当前服务器的有关的静态环境信息
 * -文件映射(mime-mapping ) 时静态环境信息
 */
public class HttpContext {
    /**
     *全部用户共享的 文件类型映射 集合
     */
    private static Map<String,String> mimeMapping=new HashMap<>();
    static {
        initMimeMapping();
    }

    /**
     * 定义初始化方法,封装mimeMapping集合的初始化过程
     */
    private static void initMimeMapping(){
        try {
            File file=new File("./config/web.xml");
            SAXReader reader=new SAXReader();
            Document doc=reader.read(file);
            Element root=doc.getRootElement();//web-app
            List<Element> elements=root.elements("mime-mapping");
            for(Element e:elements){
//                System.out.println(e.asXML());
                String ext=e.elementTextTrim("extension");
                String type=e.elementTextTrim("mime-type");
            }
        } catch (DocumentException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 根据文件的扩展名,检查对应的 媒体类型 (mime type)
     * 如 :ext 是png 则返回 image.png
     * @param ext 扩展名
     * @return    mime 类型
     */
    public static String getMineType(String ext){
        return mimeMapping.get(ext);
    }

    public static void main(String[] args) {
        //JVM 加载 HttpContext 时候会自动初始化 mimeMapping
    }



}
